package com.mac.mapper;

import com.mac.pojo.Messages;
import org.apache.ibatis.annotations.*;

import java.util.ArrayList;

public interface MessagesMapper {

    /**
     * 添加一条留言
     * @param message 留言对象
     * @return 插入的行数
     */
    @Insert("insert into messages(user_id,content) values (#{userId},#{content})")
    boolean insertMessage(Messages message);

    /**
     * 根据ID获取一条留言
     * @param messageId 留言ID
     * @return 留言对象
     */



    @Select("select * from messages where message_id = #{messageId}")
    @ResultMap("messagesResultMap")
    Messages selectMessageById(@Param("messageId") int messageId);


    /**
     * 根据用户ID获取留言
     * @param userId 用户ID
     * @return 留言对象
     */
    @Select("select * from messages where user_id = #{userId}")
    @ResultMap("messagesResultMap")
    ArrayList<Messages> selectMessageByUserId(@Param("userId") int userId);

    /**
     * 获取所有留言
     * @return 留言列表
     */
    @Select("select * from messages")
    @ResultMap("messagesResultMap")
    ArrayList<Messages> selectAllMessages();

    /**
     * 更新一条留言
     * @param message 留言对象
     * @return 更新的行数
     */
    boolean updateMessage(Messages message);

    /**
     * 删除一条留言
     * @param messageId 留言ID
     * @return 删除的行数
     */
    @Delete("delete from messages where message_id = #{messageId}")
    boolean deleteMessage(int messageId);







    /**
     * 返回所有用户信息
     * @return 返回ArrayList<User>
     */
    @Select("select * from messages")
    @ResultMap("messagesResultMap")
    ArrayList<Messages> selectAll();

    /**
     * 批量删除
     * @param ids
     */
    boolean deleteBymessgesIds(@Param("ids") int[] ids);



    /**
     * 分页查询
     * @param begin 从哪里开始
     * @param size 每次展示几个用户
     * @return 返回 ArrayList<User>
     */
    @Select("select * from messages limit #{begin} , #{size}")
    @ResultMap("messagesResultMap")
    ArrayList<Messages> selectByPage(@Param("begin") int begin, @Param("size") int size);

    /**
     * 查询总记录数
     * @return
     */
    @Select("select count(*) from messages")
    Integer selectTotalCount();

    /**
     * 分页条件查询
     * @param begin
     * @param size
     * @return
     */
    @ResultMap("messagesResultMap")
    ArrayList<Messages> selectByPageAndCondition(@Param("begin") int begin,@Param("size") int size,@Param("message") Messages message);

    /**
     * 根据条件查询总记录数
     * @return 总记录数
     */
    Integer selectTotalCountByCondition(@Param("message") Messages message);
}